package com.fpd.tools;

import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.InputStream;
import java.util.ArrayList;
import java.util.List;
import org.apache.pdfbox.exceptions.COSVisitorException;
import org.apache.pdfbox.util.PDFMergerUtility;
import lombok.extern.slf4j.Slf4j;

/**
 * @desc PDF工具类
 * @author wujiangbo
 * @date 2020年1月13日 上午11:25:40
 */
@Slf4j
public class PdfTool {

	/**
	 * @desc 将多个PDF文件合并成一个PDF文件
	 * @author wujiangbo
	 * @date 2020年1月13日 上午11:39:37
	 * @param pdfFilePathList  需要合并的PDF文件全路径集合
	 * @param mergePdfFilePath 合并完成后的PDF文件全路径
	 */
	public static void mergePdf(List<String> pdfFilePathList, String mergePdfFilePath) {
		if (pdfFilePathList != null && !pdfFilePathList.isEmpty()) {
			log.info("PDF文件合并，mergePdfFilePath：{}", mergePdfFilePath);
			try {
				// PDF合并工具类
				PDFMergerUtility mergePdf = new PDFMergerUtility();
				List<InputStream> sourcesList = new ArrayList<InputStream>();
				File file = null;
				InputStream is = null;
				for (int i = 0; i < pdfFilePathList.size(); i++) {
					String pdfFilePath = pdfFilePathList.get(i);
					file = new File(pdfFilePath);
					is = new FileInputStream(file);
					sourcesList.add(is);
				}
				mergePdf.addSources(sourcesList);
				// 设置合并生成pdf文件名称
				mergePdf.setDestinationFileName(mergePdfFilePath);
				// 合并PDF
				mergePdf.mergeDocuments();
			} catch (FileNotFoundException e) {
				e.printStackTrace();
			} catch (COSVisitorException e) {
				e.printStackTrace();
			} catch (IOException e) {
				e.printStackTrace();
			}
		}
	}
}
